package in.view.delegate; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Parcelable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import in.controller.adapter.base.RobinAdapter; import in.lib.Constants; import in.lib.builder.DialogBuilder; import in.lib.utils.ViewUtils; import in.model.DraftPost; import in.model.base.Draft; import in.rob.client.R; import in.rob.client.dialog.NewPostDialog; import in.view.delegate.base.AdapterDelegate; import in.view.holder.DraftPostHolder; public class DraftPostDelegate extends AdapterDelegate<Draft> implements OnClickListener { public DraftPostDelegate(RobinAdapter<Draft> adapter) { super(adapter); } public int getLayout() { return R.layout.draft_post_view; } @Override public View getView(Draft item, int position, View convertView, ViewGroup parent, LayoutInflater inflater) { DraftPostHolder holder; if (convertView == null) { convertView = inflater.inflate(getLayout(), parent, false); holder = new DraftPostHolder(convertView); holder.getSend().setOnClickListener(this); holder.getEdit().setOnClickListener(this); holder.getDuplicate().setOnClickListener(this); holder.getDelete().setOnClickListener(this); convertView.setTag(holder); } else { holder = (DraftPostHolder)convertView.getTag(); } convertView.setTag(R.id.TAG_POSITION, position); holder.populate((DraftPost)item); return convertView; } @Override public void onClick(View view) { final int position = (Integer)ViewUtils.getParentWithId(R.id.root_view, view).getTag(R.id.TAG_POSITION); final Draft item = getAdapter().getItem(position); if (view.getId() == R.id.send) { Intent postIntent = new Intent(view.getContext(), NewPostDialog.class); postIntent.putExtra(Constants.EXTRA_DRAFT_POST, (Parcelable)item); postIntent.putExtra(Constants.EXTRA_SEND, true); view.getContext().startActivity(postIntent); // TODO: Send event } else if (view.getId() == R.id.edit) { Intent postIntent = new Intent(view.getContext(), NewPostDialog.class); postIntent.putExtra(Constants.EXTRA_DRAFT_POST, (Parcelable)item); view.getContext().startActivity(postIntent); } else if (view.getId() == R.id.duplicate) { DraftPost post = (DraftPost)item; post.setDate(System.currentTimeMillis()); post.save(); post = null; // TODO: Send event } else if (view.getId() == R.id.delete) { AlertDialog.Builder builder = DialogBuilder.create(view.getContext()); builder.setTitle(R.string.confirm); builder.setMessage(R.string.confirm_delete); builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { item.delete(); // TODO: Send event } }); builder.setNegativeButton(R.string.no, null); builder.setNeutralButton(R.string.cancel, null); builder.show(); } } }